#include <msp430g2211.h>

#define BL 0
#define DO 2505
#define RE 2232
#define MI 1988
#define FA 1877
#define SOL 1673
#define LA 1489
#define SI 1326
#define DO2 1253
#define RE2 1116
#define MI2 994
#define FA2 939
#define SOL2 837
#define LA2 745
#define SI2 663
#define DO3 627

void jouer_note(int note, char temps);

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer

  BCSCTL1 = XT2OFF+RSEL0+RSEL1+RSEL2+RSEL3;   // Set Max DCO
  BCSCTL2= DIVS_3;
  DCOCTL = DCO0+DCO1+DCO2;

  P1DIR = BIT2+BIT4+BIT0;
  P1SEL |= BIT2+BIT4;                      // P1.0 options select
  P1OUT = 0;
  TACCTL1 = OUTMOD_4;                  // CCR1 reset/set

  __bis_SR_register(LPM0_bits + GIE);        // LPM3 + enable interrupt
}

void jouer_note(int note, char temps)
{
	int i;
	TACTL = TASSEL_2 + MC_1 + TACLR;
	TACCR0=note;
	for(i=0;i<temps;i++)
	{
		__delay_cycles(5000000);
	}
	TACTL = TASSEL_1 + MC_0 + TACLR;
}

void tetris(void)
{

	  jouer_note(MI2,2);
	  jouer_note(SI,1);
	  jouer_note(DO2,1);
	  jouer_note(RE2,2);
	  jouer_note(DO2,1);
	  jouer_note(SI,1);
	  jouer_note(LA,2);
	  jouer_note(LA,1);
	  jouer_note(DO2,1);
	  jouer_note(MI2,2);
	  jouer_note(RE2,1);
	  jouer_note(DO2,1);
	  jouer_note(SI,2);
	  jouer_note(SI,1);
	  jouer_note(DO2,1);
	  jouer_note(RE2,2);
	  jouer_note(MI2,2);
	  jouer_note(DO2,2);
	  jouer_note(LA,2);
	  jouer_note(LA,4);
	  jouer_note(RE2,2);
	  jouer_note(FA2,1);
	  jouer_note(LA2,2);
	  jouer_note(SOL2,1);
	  jouer_note(FA2,1);
	  jouer_note(MI2,3);
	  jouer_note(DO2,1);
	  jouer_note(MI2,2);
	  jouer_note(RE2,1);
	  jouer_note(DO2,1);
	  jouer_note(SI,2);
	  jouer_note(SI,1);
	  jouer_note(DO2,1);
	  jouer_note(RE2,2);
	  jouer_note(MI2,2);
	  jouer_note(DO2,2);
	  jouer_note(LA,2);
	  jouer_note(LA,4);
}
